描述

适配器模式属于结构性模式,将适配类的api转化为目标类的api,如mac电脑使用的是typec的接口,连接显示器需要hdmi接口。我们要使用mac连接显示器,需要使用扩展坞,这其实就是适配器模式。

类图

image.png

分类

  • 类适配
    是基于继承实现的
  • 对象适配
    使用组合方式实现,更加灵活

    代码

    1
    2
    3
    4
    5
    6
    public class MacInterface {
    public void typeC(){
    System.out.println("type 已经连接..");
    }
    }

    1
    2
    3
    4
    5
    public interface Monitor {

    void hdml();
    }

  • 类适配
    1
    2
    3
    4
    5
    6
    7
    public class ExtendUtil extends MacInterface implements Monitor {

    @Override
    public void hdml() {
    super.typeC();
    }
    }
  • 对象适配
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class ExtendUtilV2 implements Monitor{
    private MacInterface macInterface;
    public ExtendUtilV2(){
    macInterface =new MacInterface();
    }
    @Override
    public void hdml() {
    macInterface.typeC();
    }
    }
  • 测试代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Main  {
    public static void main(String[] args) {
    // 类适配模式
    ExtendUtil extendUtil =new ExtendUtil();
    extendUtil.hdml();
    // 对象适配模式
    ExtendUtilV2 extendUtilV2 =new ExtendUtilV2();
    extendUtilV2.hdml();
    }
    }
    image.png

总结

  • 优点
  1. 复用性好,可以适配系统中已经存在的方法,无需重写
  2. 扩展性好,可以在适配类中添加想要适配的方法
  • 缺点
  1. 系统中一旦适配类变多则导致系统代码混乱。代码晦涩难懂